手动集成 Exim 邮件服务器

如果在应用程序的初始配置过程中跳过应用程序与邮件服务器的自动集成,则必须手动将 KSMG 与邮件服务器集成。

您可以使用动态链接库 (dlfunc) 手动配置 KSMG 与 Exim 邮件服务器的队列前集成。通过队列前集成,KSMG 在邮件最终进入 Exim 邮件服务器的队列之前对其进行扫描。不支持队列后集成。

根据操作系统的具体分发,您必须修改 Exim 邮件服务器的一个或多个配置文件。

要执行 KSMG 与 Exim 的队列前集成:

  1. 确保 Exim 邮件服务器支持 dlfunc 动态链接库的功能。为此,请运行以下命令:

    exim -bV

    如果 Support for 部分包含 Expand_dlfunc 行,则 Exim 邮件服务器支持 dlfunc 动态加载库。

  2. 对 Exim 配置文件进行备份。
  3. 修改 acl_smtp_data 的访问控制列表。为此,在 Exim 配置文件中查找以下行:

    acl_smtp_data = acl_check_data(可以使用不同的变量或宏代替 acl_check_data

    并在行

    acl_check_data:(或包含不同变量或宏的字符串)

    后面添加以下行:

    # Manually added block ksmg-exim-filter-dflunc begin

    warn set acl_m_ksmg_input_directory = ${spool_directory}/input

    set acl_m_ksmg_lookup_result = ${lookup {$message_id-D} dsearch {$acl_m_ksmg_input_directory}}

    warn condition = ${if eq {$acl_m_ksmg_lookup_result}{}{yes}{no}}

    set acl_m_ksmg_input_directory = ${spool_directory}/input/${substr{5}{1}{$message_id}}

    warn set acl_m_ksmg_answer = ${dlfunc{DLFUNC_LIBRARY_FULLPATH}{scan}{$acl_m_ksmg_input_directory}}

    defer condition = ${if match {$acl_m_ksmg_answer}{^[245]}{no}{yes}}

    log_message = KSMG check failed, unexpected answer: $acl_m_ksmg_answer

    defer condition = ${if match {$acl_m_ksmg_answer}{^4}{yes}{no}}

    log_message = KSMG check defer: $acl_m_ksmg_answer

    deny condition = ${if match {$acl_m_ksmg_answer}{^5}{yes}{no}}

    log_message = KSMG check reject: $acl_m_ksmg_answer

    message = This message is blocked due to security reason

    warn condition = ${if match {$acl_m_ksmg_answer}{^2}{yes}{no}}

    logwrite = KSMG check accept: $acl_m_ksmg_answer

    # Manually added block ksmg-exim-filter-dlfunc ends here

    其中 DLFUNC_LIBRARY_FULLPATH 是 dlfunc 库的路径。The path to the library depends on the version of Exim and may look like this:

    • 对于从 4.86 到 4.90 的 Exim 版本(不包括在内) — /opt/kaspersky/ksmg/lib/libklms-exim-abi20-1.so
    • 对于从 4.90 到 4.93 的 Exim 版本(不包括在内) — /opt/kaspersky/ksmg/lib/libklms-exim-abi20-2.so
    • 对于从 4.93 到 4.94 的 Exim 版本(不包括在内) — /opt/kaspersky/ksmg/lib/libklms-exim-abi31.so
    • 对于从 4.94 到 4.96 的 Exim 版本(不包括在内) — /opt/kaspersky/ksmg/lib/libklms-exim-abi41.so
    • 对于 4.96 及更高版本的 Exim — /opt/kaspersky/ksmg/lib/libklms-exim-abi60.so
  4. 如有必要,编辑完配置文件后,您可以重新生成主 Exim 配置文件。
  5. kluser 用户添加到包含启动 exim 进程的用户的组中。

    默认情况下,该组在 Red Hat Enterprise Linux 和 Rocky Linux 中称为“exim”,在 Ubuntu 中称为“Debian-exim”。

  6. 将启动 exim 进程的用户添加到 kluserskl_var_users 组中。

    默认情况下,Red Hat Enterprise Linux 和 Rocky Linux 中的用户名为“exim”,Ubuntu 中的用户名为“Debian-exim”。

  7. 在 /etc/opt/kaspersky/ksmg/filters.conf 过滤器设置文件的 [global] 部分中,设置以下参数值:

    scanner=unix:/var/run/ksmg/klms_scanner_sock

    header-guard=false

    • 如果 PrivateTmp 设置为 false 或未在 Exim Unit 文件中指定:

      workdir=/tmp

    • 如果 PrivateTmp 在 Exim Unit 文件中设置为 true

      workdir=/var/opt/kaspersky/ksmg/tmp

  8. 在 /var/opt/kaspersky/ksmg/installer.dat 文件中,设置以下参数值:

    MTA_INTEGRATION_METHOD=dlfunc

    MTA_INTEGRATION_MODE=prequeue

    filters_workdir=<步骤 7 中“workdir”参数的值>

    mta=manual

    START_SMTP_PROXY=0

    START_MILTER=0

  9. 重新启动 ksmg 服务。
  10. 重新启动 Exim 邮件服务器。

与 Exim 的整合已完成。

页面顶部